import request from "@/utils/request";

const JOB_BASE_URL = "/api/v1/job";

const JobApi = {
  /** 获取角色分页数据 */
  getPage(queryParams?: JobPageQuery) {
    return request<any, PageResult<JobPageVO[]>>({
      url: `${JOB_BASE_URL}/pages`,
      method: "post",
      data: queryParams,
    });
  },

  /**
   * 获取岗位表单数据
   *
   * @param id 岗位ID
   * @returns 岗位表单数据
   */
  getFormData(id: string) {
    return request<any, JobForm>({
      url: `${JOB_BASE_URL}/${id}`,
      method: "get",
    });
  },

  /** 添加岗位 */
  create(data: JobForm) {
    return request({
      url: `${JOB_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 更新岗位
   *
   * @param id 岗位ID
   * @param data 角色表单数据
   */
  update(id: string, data: JobForm) {
    return request({
      url: `${JOB_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 保存并发布岗位信息
   *
   * @param id 岗位ID
   */
  publishForm(data: JobForm) {
    return request({
      url: `${JOB_BASE_URL}/publishForm`,
      method: "put",
      data: data,
    });
  },

  /**
   * 发布岗位信息
   *
   * @param id 岗位ID
   */
  publishById(id: string) {
    return request({
      url: `${JOB_BASE_URL}/publish/${id}`,
      method: "put",
    });
  },

  /**
   * 下架岗位数据
   *
   * @param id 岗位ID
   */
  soldOutById(id: string) {
    return request({
      url: `${JOB_BASE_URL}/soldOut/${id}`,
      method: "put",
    });
  },

  /**
   * 删除岗位数据
   *
   * @param id 岗位ID
   */
  deleteById(id: string) {
    return request({
      url: `${JOB_BASE_URL}/${id}`,
      method: "delete",
    });
  },
};

export default JobApi;

/** 兼职分页查询参数 */
export interface JobPageQuery extends PageQuery {
  /** 搜索关键字 */
  keywords?: string;

  /**
   * 薪资范围 (如 "15-20k")
   */
  hourlyWage?: string;

  /**
   * 结算方式 (如 "月结", "周结")
   */
  settlement?: string;

  /**
   * 学历要求 (如 "大专", "本科")
   */
  educational?: string;

  /**
   * 工作时间 (如 "9:00-18:00")
   */
  workTime?: string;

  /**
   * 工作时段 (如 "全职", "兼职")
   */
  workHours?: string;

  /**
   * 工作地点
   */
  workLocation?: string;
  /**
   * 创建时间
   */
  createTimes?: Array<string>;
  /**
   * 发布时间-起
   */
  createTimeStart?: string;
  /**
   * 发布时间-止
   */
  createTimeEnd?: string;
  /**
   * 发布时间
   */
  publishTimes?: Array<string>;
  /**
   * 发布时间-起
   */
  publishTimeStart?: string;
  /**
   * 发布时间-止
   */
  publishTimeEnd?: string;
}

export interface JobForm {
  /**
   * 主键
   */
  id?: string;

  /**
   * 岗位名称
   */
  name?: string;

  /**
   * 岗位类型
   */
  type?: string;

  /**
   * 岗位标题
   */
  title?: string;

  /**
   * 岗位描述
   */
  description?: string;

  /**
   * 薪资范围 (如 "15-20k")
   */
  hourlyWage?: string;

  /**
   * 结算方式 (如 "月结", "周结")
   */
  settlement?: string;

  /**
   * 学历要求 (如 "大专", "本科")
   */
  educational?: string;

  /**
   * 工作时间 (如 "9:00-18:00")
   */
  workTime?: string;

  /**
   * 工作时段 (如 "全职", "兼职")
   */
  workHours?: string;

  /**
   * 工作地点
   */
  workLocation?: string;

  /**
   * 工作要求 (HTML格式文本)
   */
  jobRequirements?: string;

  /**
   * 福利 (逗号分隔，如 "五险一金,年终奖")
   */
  welfare?: string;

  /**
   * 状态 (0-禁用, 1-启用)
   */
  status?: JobStatus;

  //发布时间
  publishTime?: string;

  //下架时间
  soldOutTime?: string;

  /**
   * 乐观锁
   */
  revision?: string; // ISO 日期字符串

  /**
   * 创建人
   */
  createUserId?: string;

  /**
   * 创建人名称
   */
  createUserName?: string;

  /**
   * 创建时间
   */
  createTime?: string; // ISO 日期字符串

  /**
   * 更新人
   */
  updateUserId?: string;

  /**
   * 更新人名称
   */
  updateUserName?: string;

  /**
   * 更新时间
   */
  updateTime?: string; // ISO 日期字符串
}

/** 兼职分页对象 */
export interface JobPageVO {
  /**
   * 主键
   */
  id?: string;

  /**
   * 岗位名称
   */
  name?: string;

  /**
   * 岗位类型
   */
  type?: string;

  /**
   * 岗位标题
   */
  title: string;

  /**
   * 岗位描述
   */
  description?: string;

  /**
   * 薪资范围 (如 "15-20k")
   */
  hourlyWage?: string;

  /**
   * 结算方式 (如 "月结", "周结")
   */
  settlement?: string;

  /**
   * 学历要求 (如 "大专", "本科")
   */
  educational?: string;

  /**
   * 工作时间 (如 "9:00-18:00")
   */
  workTime?: string;

  /**
   * 工作时段 (如 "全职", "兼职")
   */
  workHours?: string;

  /**
   * 工作地点
   */
  workLocation?: string;

  /**
   * 工作要求 (HTML格式文本)
   */
  jobRequirements?: string;

  /**
   * 福利 (逗号分隔，如 "五险一金,年终奖")
   */
  welfare?: string;

  /**
   * 状态 (0-禁用, 1-启用)
   */
  status?: JobStatus;

  /**
   * 乐观锁
   */
  revision?: string; // ISO 日期字符串

  /**
   * 创建人
   */
  createUserId?: string;

  /**
   * 创建人名称
   */
  createUserName?: string;

  /**
   * 创建时间
   */
  createTime?: string; // ISO 日期字符串

  /**
   * 更新人
   */
  updateUserId?: string;

  /**
   * 更新人名称
   */
  updateUserName?: string;

  /**
   * 更新时间
   */
  updateTime?: string; // ISO 日期字符串
}

/**
 * 岗位状态枚举
 */
export type JobStatus = 1 | 2 | 3;
